//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package org.hzero.starter.keyencrypt.mvc;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.List;

/**
 * {@link WebMvcConfigurer}定义回调方法以定制通过@EnableWebMvc启用的Spring MVC的基于Java的配置。@EnableWebMvc注释的配置类可以实现此接口以进行回调，并有机会定制默认配置。
 * EnableWebMvc注解被spring-boot-actuator-autoconfigure包下的WebMvcEndpointChildContextConfiguration使用，并开启了自动装配
 */
@Configuration
public class EncryptArgParamResolverConfiguration implements WebMvcConfigurer {
    public EncryptArgParamResolverConfiguration() {
    }

    /**
     * 对请求中加了{@link org.hzero.starter.keyencrypt.core.Encrypt}注解的属性进行解密的数据绑定器
     */
    @Bean
    public EncryptServletModelAttributeMethodProcessor encryptMethodProcessor() {
        return new EncryptServletModelAttributeMethodProcessor();
    }

    /**
     * 添加自定义参数解析器
     * @param argumentResolvers initially an empty list
     */
    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add(encryptMethodProcessor());
    }
}
